第 4 章:Pod 分類 Namespaces
Namespaces 是什麼
Kubernetes 提供了抽象的 Cluster (virtual cluster) 的概念,讓我們能根據專案不同、執行團隊不同,或是商業考量,將原本擁有實體資源的單一 Kubernetes Cluster ,劃分成幾個不同的抽象的 Cluster (virtual cluster)
K8S cluster 內建 default
, kube-system
與 kube-public
這三個 namespaces
-
default
預設的 Namespaces 名稱為 default,過去我們產生的物件像是 Deployment, Services 等若沒特別指定 Namespace 都是存放在名稱為 default 的 namespaces 中
-
kube-system
在 Kubernetes 中,較特別的資源都會存放在 kube-system 這個 namespace。像是 kube-dns 或是 heapster 都是存放在該 namepsace 中。為了預防這些物件不小心被使用者刪除或更改導致集群毀損
-
kube-public
kube-public 也是個特殊的 namespace,存放在裡面的物件可被所有的使用者讀取
Namespaces 特點
- 在同一個 Kubernetes Cluster 中,每個 Namespaces 的名稱都是要獨特的
- 當一個 Namespaces 被刪除時,在該 Namespace 裡的所有物件也會被刪除
- 可以透過 Resource Quotas 限制一個 Namespaces 所可以存取的資源
建立 Namespaces
kubectl create namespace newspace
namespace "newspace" created
透過 kubectl get namespaces
可以查看剛創建好的 namespaces
切換預設 Namespaces
若要查看目前在哪個 Namespace 底下,可用以下指令
kubectl config view | grep namespace:
可以看到預設為 default
。可以透過 kubectl config set-context
指令,將預設的指令切換為 newspace
,指令如下:
kubectl config set-context \
> $(kubectl config current-context) \
>--namespace=newspace
Context "minikube" modified.
若再用指令查看目前預設的 namespace,可以發現原本的 default 變為 newspace 了,